<?php
/**
 * Created by 784855684@qq.com.
 * Link: https://github.com/lichtung/wshore
 * User: linzh
 * Date: 7/23/17
 * Time: 1:43 PM
 */
declare(strict_types=1);


namespace wshore\swoole\interfaces;

use Swoole\Http\Request;
use Swoole\WebSocket\Frame;
use Swoole\WebSocket\Server;

/**
 * Interface WebsocketHandlerInterface websocket处理
 * @package wshore\swoole\interfaces
 */
interface WebsocketHandlerInterface
{
    /**
     * 当WebSocket客户端与服务器建立连接并完成握手后会回调此函数
     * onOpen事件函数中可以调用push向客户端发送数据或者调用close关闭连接
     * @param Server $svr
     * @param Request $req Http请求对象，包含了客户端发来的握手请求信息
     * @return void
     */
    public function onOpen(Server $svr, Request $req);

    /**
     * 当服务器收到来自客户端的数据帧时会回调此函数
     * (客户端发送的ping帧不会触发onMessage，底层会自动回复pong包)
     * @param Server $svr
     * @param Frame $frame 客户端发来的数据帧信息
     * @return mixed
     */
    public function onMessage(Server $svr, Frame $frame);

    /**
     * @param Server $server
     * @param int $fd
     * @return mixed
     */
    public function onClose(Server $server, int $fd);

}